From: Marco Trevisan (TreviƱo) Date: Fri, 19 Jan 2018 15:39:13 +0000 (+0100) Subject: workspaceThumbnail: rebuild thumbnails if workareas size changed X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~929^2~5^2~110 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=c29bd46e7a7e37a83849df8b3186c84eb46679ac;p=gnome-shell.git workspaceThumbnail: rebuild thumbnails if workareas size changed https://bugzilla.gnome.org/show_bug.cgi?id=792687 --- diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js index 5565a1e41..3dffd1281 100644 --- a/js/ui/workspaceThumbnail.js +++ b/js/ui/workspaceThumbnail.js @@ -675,11 +675,7 @@ var ThumbnailsBox = new Lang.Class({ this._settings.connect('changed::dynamic-workspaces', this._updateSwitcherVisibility.bind(this)); - Main.layoutManager.connect('monitors-changed', () => { - this._destroyThumbnails(); - if (Main.overview.visible) - this._createThumbnails(); - }); + Main.layoutManager.connect('monitors-changed', this._rebuildThumbnails.bind(this)); }, _updateSwitcherVisibility() { @@ -872,6 +868,9 @@ var ThumbnailsBox = new Lang.Class({ Main.overview.connect('windows-restacked', this._syncStacking.bind(this)); + this._workareasChangedId = + global.screen.connect('workareas-changed', this._rebuildThumbnails.bind(this)); + this._targetScale = 0; this._scale = 0; this._pendingScaleUpdate = false; @@ -901,12 +900,24 @@ var ThumbnailsBox = new Lang.Class({ this._syncStackingId = 0; } + if (this._workareasChangedId > 0) { + global.screen.disconnect(this._workareasChangedId); + this._workareasChangedId = 0; + } + for (let w = 0; w < this._thumbnails.length; w++) this._thumbnails[w].destroy(); this._thumbnails = []; this._porthole = null; }, + _rebuildThumbnails() { + this._destroyThumbnails(); + + if (Main.overview.visible) + this._createThumbnails(); + }, + _workspacesChanged() { let validThumbnails = this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL);